<?php

namespace common\models;

use Yii;

/**
 * This is the model class for table "{{%course}}".
 *
 * @property string $id 课程ID
 * @property int $user_id 用户ID
 * @property int $classify_id 分类ID
 * @property int $speaker_id 讲师ID
 * @property string $title 课程名称
 * @property string $intro 课程简介
 * @property string $file_id 封面ID
 * @property int $hour 课时
 * @property int $is_credit 认证学分
 * @property int $is_order 顺序播放
 * @property int $started_at 开课时间
 * @property int $ended_at 结课时间
 * @property int $status 状态
 * @property int $created_at 创建时间
 * @property int $updated_at 更新时间
 * @property int $is_charge 是否收费 0-不收费 1-收费
 * @property int $is_top 是否置顶 0-不置顶 1-置顶
 * @property int $toped_at 置顶时间
 * @property string $icon 课程图标
 * @property string $price 课程价格
 */
class Course extends Base
{
    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return '{{%course}}';
    }

    /**
     * 设置可搜索列
     * @name: searchFields
     * @return array
     * @author: rickeryu <lhyfe1987@163.com>
     * @time: 2017/11/27 下午2:59
     */
    static function searchFields(){
        return ['title'];
    }

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['id','user_id', 'classify_id', 'speaker_id', 'hour','intro','title'], 'required'],
            [['user_id', 'classify_id', 'speaker_id', 'hour', 'is_credit', 'is_order', 'started_at', 'ended_at', 'status', 'created_at', 'updated_at', 'is_charge', 'is_top', 'toped_at'], 'integer'],
            [['intro'], 'string'],
            [['price'], 'number'],
            [['id', 'title', 'file_id'], 'string', 'max' => 50],
            [['icon'], 'string', 'max' => 255],
            [['id'], 'unique'],
        ];
    }

    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            'id' => '课程ID',
            'user_id' => '用户ID',
            'classify_id' => '分类ID',
            'speaker_id' => '讲师ID',
            'title' => '课程名称',
            'intro' => '课程简介',
            'file_id' => '封面ID',
            'hour' => '课时',
            'is_credit' => '认证学分',
            'is_order' => '顺序播放',
            'started_at' => '开课时间',
            'ended_at' => '结课时间',
            'status' => '状态',
            'created_at' => '创建时间',
            'updated_at' => '更新时间',
            'is_charge' => '是否收费 0-不收费 1-收费',
            'is_top' => '是否置顶 0-不置顶 1-置顶',
            'toped_at' => '置顶时间',
            'icon' => '课程图标',
            'price' => '课程价格',
        ];
    }

    /**
     * 参加学习课程的学生列表
     * @name: getCourseSelectUser
     * @return
     * @author: rickeryu <lhyfe1987@163.com>
     * @time: 2017/12/20 13:25
     */
    public function getCourseSelectUser(){
        $result = $this->hasMany(User::className(),['id'=>'user_id'])->viaTable(CourseSelect::tableName(),['course_id'=>'id']);
        return $result;
    }

    /**
     * 获取课程制作人信息
     * @name: getCourseSelects
     * @return
     * @author: rickeryu <lhyfe1987@163.com>
     * @time: 2017/12/20 13:25
     */
    public function getCourseUser(){
        $result = $this->hasOne(User::className(),['id'=>'user_id']);
        return $result;
    }

    /**
     * 返回课程统计
     * @name: getCourseSelects
     * @return
     * @author: rickeryu <lhyfe1987@163.com>
     * @time: 2017/12/20 13:25
     */
    public function getCourseCount(){
        return $this->hasOne(CourseCount::className(),['course_id'=>'id']);
    }

    /**
     * 返回课程图片
     * @name: getCourseSelects
     * @return
     * @author: rickeryu <lhyfe1987@163.com>
     * @time: 2017/12/20 13:25
     */
    public function getFile(){
        return $this->hasOne(File::className(),['id'=>'file_id']);
    }

}
